Infographic disk activity interface and method for displaying relative saturation of a computer disk system

ABSTRACT

A computer-readable medium storing instructions which, when executed by at least one processor of a computer system, adapt the computer system to implement a method for displaying relative saturation of a computer disk system. The method includes visually displaying elements of the computer disk system in an infographic disk activity interface. The elements may include at least one of the group including at least one disk controller, at least one physical disk, at least one file, and at least one other files. The elements are visually linked using an arrangement of connectors defining respective data flow paths between the elements. Disk system activity along the data flow paths is visually indicated using static and/or dynamic infographic display elements.

TECHNICAL FIELD AND BACKGROUND

The present disclosure relates broadly to an infographic disk activityinterface and method for displaying relative saturation of a computerdisk system. In one exemplary implementation, the invention may beutilized to quickly illustrate for end users exactly where diskbottlenecks are occurring on a computer system, in order to help solvetroublesome and elusive disk-related performance issues. The presentinterface may use various metrics collected from different computersubsystems, and application of formulas and visual rendering techniquesto present the disk system activity to the user in an intuitive,meaningful fashion.

SUMMARY OF EXEMPLARY EMBODIMENTS

Various exemplary embodiments of the present invention are describedbelow. Use of the term “exemplary” means illustrative or by way ofexample only, and any reference herein to “the invention” is notintended to restrict or limit the invention to exact features or stepsof any one or more of the exemplary embodiments disclosed in the presentspecification. References to “exemplary embodiment,” “one embodiment,”“an embodiment,” “various embodiments,” and the like, may indicate thatthe embodiment(s) of the invention so described may include a particularfeature, structure, or characteristic, but not every embodimentnecessarily includes the particular feature, structure, orcharacteristic. Further, repeated use of the phrase “in one embodiment,”or “in an exemplary embodiment,” do not necessarily refer to the sameembodiment, although they may.

According to one exemplary embodiment, the invention may comprise acomputer-readable medium storing instructions which, when executed by atleast one processor of a computer system, adapt the computer system toimplement a method for displaying relative saturation of a computer disksystem. The method includes visually displaying elements of the computerdisk system in an infographic disk activity interface. The term“infographic” refers broadly herein to any visual representation ofinformation, data or knowledge. The elements may comprise at least oneof the group consisting of at least one disk controller, at least onephysical disk, at least one file, and at least one other files. Theelements are visually linked using an arrangement of connectors definingrespective data flow paths between the elements. Disk system activityalong the data flow paths is visually indicated using static and/ordynamic infographic display elements.

According to another exemplary embodiment, for each element displayed,the connectors comprise an inbound connector representing a data writepath (to the controller, physical disk or file), and an outboundconnector representing a data read path (to the controller, physicaldisk or file).

According to another exemplary embodiment, each connector comprises astatic path boundary defined by first and second solid equidistantlines.

According to another exemplary embodiment, each connector furthercomprises an inner graphic within the path boundary, and representingrelative disk activity along the data flow path.

According to another exemplary embodiment, in a real-time mode, theinner graphic comprises a moving segmented line. Alternatively, theinner graphic may comprise any moving or non-moving icon, symbol, image,or other representation.

According to another exemplary embodiment, in a real-time mode, a widthof the moving segmented line changes dynamically in response to varyinglevels of path saturation.

According to another exemplary embodiment, the inner line width changeis dampened between sample readings of data flow path saturation.

According to another exemplary embodiment, in a real-time mode, a colorof the moving segmented line changes dynamically in response to varyinglevels of path saturation.

According to another exemplary embodiment, in a real-time mode, a speedof the moving segmented line changes dynamically in response to varyinglevels of path saturation.

According to another exemplary embodiment, in a real-time mode, a widthand color of the segmented line changes simultaneously and dynamicallyin response to varying levels of path saturation.

According to another exemplary embodiment, in a historical mode, theinner graphic comprises a colored, non-moving solid line.

Alternatively, exemplary embodiments of the invention may comprise aninfographic disk activity interface, and computer-implemented method fordisplaying relative saturation of a computer disk system.

Embodiments of the present invention, including any part(s) orfunction(s) thereof, may be implemented using hardware, software,firmware, or a combination thereof, and may be implemented in one ormore computer systems or other processing systems. In one exemplaryembodiment, the invention may be directed toward one or more computersystems capable of carrying out the functionality described herein. Anexample of a computer system useful for implementing the presentinvention may comprise a computer (or processor), which in an exemplaryembodiment may be a personal computer (PC) system running anycommercially available operating system such as WINDOWS MOBILE™ forPOCKET PC, or MICROSOFT® WINDOWS® XP/Vista, etc. available fromMICROSOFT® Corporation of Redmond, Wash., U.S.A., Mac/OS from APPLE®Corporation of Cupertino, Calif., U.S.A., or any of various versions ofUNIX® (a trademark of the Open Group of San Francisco, Calif., USA)including, e.g., LINUX®, HPUX®, IBM AIX®, and SCO/UNIX®.

The above platforms are provided by way of example only. Indeed, theinvention may be implemented on any appropriate computer system runningany appropriate operating system. In one exemplary embodiment, thepresent invention may be implemented on a computer system incorporatingcomponents such as, for example, a computing device, a communicationsdevice, a telephone, a personal digital assistant (PDA), a personalcomputer (PC), a handheld PC, client workstations, thin clients, thickclients, proxy servers, network communication servers, remote accessdevices, client computers, server computers, routers, web servers, data,media, audio, video, telephony or streaming technology servers, and thelike.

The computer system may include one or more processors which may beconnected to a communication infrastructure, such as a communicationsbus and network. Various exemplary software embodiments may be describedin terms of this exemplary computer system. The exemplary computersystem may include a display interface that may forward graphics, text,and other data from the communication infrastructure (or from a framebuffer) for display on the display unit. The computer system may alsoinclude computer-readable mediums, for example, a main memory, randomaccess memory (RAM), and a secondary memory. The secondary memory mayinclude, for example, a hard disk drive and/or a removable storagedrive, representing a floppy diskette drive, a magnetic tape drive, anoptical disk drive, or a compact disk drive CD-ROM. The removablestorage drive may read from and/or write to a removable storage unit ina well known manner. Removable storage unit, also called a programstorage device or a computer program product, may represent a floppydisk, magnetic tape, optical disk, or compact disk which may be readfrom and written to by removable storage drive. As will be appreciated,the removable storage unit may include a computer usable storage mediumhaving stored therein computer software and/or data.

In alternative exemplary embodiments, secondary memory may include othersimilar devices for allowing computer programs or other instructions tobe loaded into the computer system. Such devices may include, forexample, a removable storage unit and an interface. Examples of such mayinclude a program cartridge and cartridge interface such as those foundin video game devices, a removable memory chip such as an erasableprogrammable read only memory (EPROM), or programmable read only memory(PROM) and associated socket, and other removable storage units andinterfaces, which may allow software and data to be transferred from theremovable storage unit to computer system.

The computer system may also include input and output devices, such asthose commonly known and utilized in the art. Examples of input devicesinclude a mouse or other pointing device, such as a digitizer, and akeyboard or other data entry device. Examples of output devices includea display unit and display interface (e.g., display screen, monitor,etc.). Additionally, the computer system may include input/output (I/O)devices such as a communications interface, cable and communicationspath. These devices may include, for example, a network interface card,and modems.

The communications interface may allow software and data to betransferred between the computer system and external devices. Examplesof communications interface may include a modem, a network interface(such as an Ethernet card), a communications port, and a PersonalComputer Memory Card International Association (PCMCIA) slot and card.Software and data transferred via the communications interface may be inthe form of signals which may be electronic, electromagnetic, optical orother signals capable of being received by the communications interface.These signals may be provided to communications interface via acommunications path (e.g., channel). This channel may carry signals,which may include propagated signals, and may be implemented using wireor cable, fiber optics, a telephone line, a cellular link, an radiofrequency (RF) link and other communications channels.

BRIEF DESCRIPTION OF THE DRAWING

The description of exemplary embodiments proceeds in conjunction withthe following drawing, in which

FIG. 1 is an instance of the present disk activity interface (DAI)implemented in a database management system (DBMS) environment.

DESCRIPTION OF EXEMPLARY EMBODIMENTS AND BEST MODE

The present invention is described more fully hereinafter with referenceto the accompanying drawings, in which one or more exemplary embodimentsof the invention are shown. Like numbers used herein refer to likeelements throughout. This invention may, however, be embodied in manydifferent forms and should not be construed as limited to theembodiments set forth herein; rather, these embodiments are provided sothat this disclosure will be operative, enabling, and complete.Accordingly, the particular arrangements disclosed are meant to beillustrative only and not limiting as to the scope of the invention,which is to be given the full breadth of the appended claims and any andall equivalents thereof. Moreover, many embodiments, such asadaptations, variations, modifications, and equivalent arrangements,will be implicitly disclosed by the embodiments described herein andfall within the scope of the present invention.

Although specific terms are employed herein, they are used in a genericand descriptive sense only and not for purposes of limitation. Unlessotherwise expressly defined herein, such terms are intended to be giventheir broad ordinary and customary meaning not inconsistent with thatapplicable in the relevant industry and without restriction to anyspecific embodiment hereinafter described. As used herein, the article“a” is intended to include one or more items. Where only one item isintended, the term “one”, “single”, or similar language is used. Whenused herein to join a list of items, the term “or” denotes at lease oneof the items, but does not exclude a plurality of items of the list.

For exemplary methods or processes of the invention, the sequence and/orarrangement of steps described herein are illustrative and notrestrictive. Accordingly, it should be understood that, although stepsof various processes or methods may be shown and described as being in asequence or temporal arrangement, the steps of any such processes ormethods are not limited to being carried out in any particular sequenceor arrangement, absent an indication otherwise. Indeed, the steps insuch processes or methods generally may be carried out in variousdifferent sequences and arrangements while still falling within thescope of the present invention.

Additionally, any references to advantages, benefits, unexpectedresults, or operability of the present invention are not intended as anaffirmation that the invention has been previously reduced to practiceor that any testing has been performed. Likewise, unless statedotherwise, use of verbs in the past tense (present perfect or preterite)is not intended to indicate or imply that the invention has beenpreviously reduced to practice or that any testing has been performed.

In one exemplary embodiment, the present disk activity interface (DAI)provides a database issue discovery and infographic display—via anyconventional output device—designed to enable users, such as databaseadministrator's (DBA's), to readily identify, diagnose, and resolveenterprise-wide database performance problems within a databasemanagement system (DBMS) environment. The infographic display givesDBA's a basic overview of the overall system health, and enables them toreadily determine underlying server contention issues and processes inreal-time and historical modes. The DAI may further illustrate whereperformance bottleneck occur, and may facilitate the process of tuningthe disk system.

The term “DBMS” refers broadly to any computer software designed for thepurpose of managing and querying databases. Typical commercial examplesof DBMSs include Oracle®, DB2®, Microsoft Access®, Microsoft SQLServer®, PostgreSQL®, MySQL® and FileMaker®. DBMSs are typically used byDBA's in the creation of database systems.

The term “database” is defined as any structured collection of recordsor data that is stored in a computer so that a program can consult it toanswer queries. The records retrieved in answer to queries becomeinformation that can be used to make decisions.

The “database administrator” (DBA) refers to a person who is responsiblefor the environmental aspects of a database. In general, these mayinclude (for example) creating and testing backups, verifying dataintegrity, defining and/or implementing access controls to the data,ensuring maximum uptime, ensuring maximum performance, and helpingprogrammers and engineers to efficiently utilize the database.

The present DAI may be implemented as one or a combination ofinstructions, algorithm(s), computer program(s), and/or software storedon a computer-readable medium, which may be read and executed by acomputing platform, such as a general purpose computer, to perform theoperations described below. Minimum hardware requirements may include,for example, a 600 MHz or higher processor, 256 MB of RAM, and 15 MB ofhard disk space.

The exemplary DAI utilizes two display modes, “real-time” and“historical”. In real-time mode, the DAI uses continuously updatedanimated lines to show current disk activity. In this mode, a baselinefor normal activity and predefined thresholds may be set, such thatusers may be alerted (e.g., via e-mail) when the DAI detects performancebottlenecks of any kind. In historical mode, static lines are used toshow the average activity between a start and end time specified by theuser.

I. Elements of Disk Activity Interface (DAI)

FIG. 1 illustrates an exemplary embodiment of the DAI 10 in a dynamicreal-time mode. A similar infographic display may be utilized toillustrate a predefined (or static) historical overview, discussedbelow. Various elements of the DAI 10 may comprise, for example, one ora plurality of the following: a computer Disk System 11, Disk Controller12, Physical Disk 14, Logical Disk 15, Files 16, Other Files 17, andConnectors 18. Each of these elements is discussed separately below.

Computer Disk System 11

In the exemplary embodiment, the Disk System 11 element of the DAI 10 isa logical representation of a physical computer's entire disk system.Thus, in this implementation, there is only one system element percomputer system. There may be multiple operating system software (OS)instances installed on a computer system that share the same disksystem. In this scenario, there is typically one primary and one or morevirtual OS instances.

Disk Controller 12

The Disk Controller element is shown adjacent the Disk System 11. TheDisk Controller 12 is a hardware component that controls the flow ofdata into and out of one or more of the Physical Disks 14. The DiskSystem 11 can have multiple Disk Controllers 12, each with zero or morePhysical Disks 14 operatively connected thereto. In the case of multipleDisk Controllers 12, the controllers are presented top to bottom in theDAI in the order which they are discovered on the computer system. TheDisk Controller 12 may be integrated into the Disk System 11, and mayprovide RAID capability. RAID combines physical hard disks into a singlelogical unit to provide performance and/or fault tolerance benefits, andcan be used on servers, workstations, and external storage devices.

Physical Disk 14

One or more Physical Disk elements are displayed in the DAI 10 adjacenteach Disk Controller 12. The Physical Disk 14 may be a collection of oneor more physical hard disk drives which are recognized as a singlelogical unit by the primary OS instance. While it is possible for a DiskController 12 to have zero Physical Disks 14 operatively attached, theexemplary DAI 10 only displays controllers with at least one PhysicalDisk 14 since the others may not be relevant to disk performance. Whenthere are multiple Physical Disks 14, the disks are presentedtop-to-bottom in the order in which they are discovered from the primaryOS instance.

Logical Disk 15

Each Physical Disk 14 is partitioned into one or more Logical Disks 15displayed in the DAI 10 adjacent each Disk Controller 12. The LogicalDisk 15 is not a physical entity, but rather an OS entity createdprimarily for organizational purposes, and serves as the container forOS files. A Logical Disk 15 can also span multiple Physical Disks 14.Each Logical Disk 15 in the Disk System 11 is given a letter or index(and perhaps an additional label), so that within the OS the LogicalDisks 15 may be easily identified. On each Physical Disk 14, the LogicalDisks 15 are arranged (e.g., left-to-right) ordered by the drive letterand/or index. In the case of a Logical Disk 15 that spans multiplePhysical Disks 14, the Logical Disk 15 will display on all such PhysicalDisks 14.

Files 16

The Files of the DAI 10 are displayed adjacent respective Logical Disks15 in a columnar display format. A File 16, like a Logical Disk 15, isan OS entity which may comprise a sequence of binary digits. Thesebinary digits may represent integer values or text characters, oranything else. A Logical Disk 15 may have many Files 16, but for thepurpose of the exemplary DAI, only the specific Files 16 most relevantto the user and the application of the software are displayed. Files 16are arranged (e.g, end-to-end) on a Logical Disk 15 until a gap 21 isreached. After the gap 21, there will either be a new Logical Disk 15(if the Physical Disk 14 contains more than one Logical Disk 15) or theelement Other Files 17, described below.

Other Files 17

The Other Files element is displayed in the DAI 10 at the far right ofany Physical Disk 14, and is separated from the nearest File 16 by gap21. Other Files 17 comprise an abstraction of all other files on thePhysical Disk 14 that are not represented by individual file elements.This information may be important to the user because activityassociated with those other files can also impact disk performance.

Connectors 18

Connectors 18 are used to visually join the various disk elementsdiscussed above, and represent the path along which data flows from oneelement to the next. The Connectors 18 may serve multiple purposes, suchas providing a visual illustration of Disk System 11 hierarchy byindicating which elements are logically connected. A second purpose isto illustrate relative saturation (activity) and/or bottlenecks alongthe paths between the elements.

Each Disk Controller 12, Physical Disk 14, and File 16 element has bothan Outbound Connector 18A and an Inbound Connector 18B, representing thedata write path and data read path, respectively. Each Connector 18 iscomprised of two parts: an outer, static path boundary (or “pipe”) 22,and an inner line 23 (or other graphic) representing the relativeactivity along the path. The purpose of the inner line 23 is tohighlight path activity, or relative saturation, at any point in theDisk System 11. When in real-time mode, the inner line 23 is a dynamic,constantly moving segmented-line. In historical mode, the inner line 23is a static (non-moving) and solid (non-segmented) line.

The logic used for determining and displaying the color and width of theinner line 23 varies depending on the element associated with the line23, and is described in the next section below. A relatively wide redinner line 23, for example, may imply a high level of path saturation(typically a negative condition requiring attention), while a relativelythin green inner line 23 implies a lower level of saturation (typicallya positive condition). Various color shades between red and green may beused to represent relative saturation levels between the applicableminimum and maximum values for the element. These minimum and maximumvalues are described in more detail below. The absence of an inner line23 in the connector 18 indicates a near zero or negligible saturation,rather than a total absence of IO throughput. When in real-time mode,the inner line 23 can change dynamically in both width and color, eitherseparately or simultaneously. Alternatively, the speed at which theinner line 23 moves and/or the density (i.e., spacing) of the dashedsegments can also be adjusted to indicate relative path saturation.Using the Connectors 18 in the DAI 10, DBA's and other users can quicklypinpoint where IO bottlenecks lie within the overall OS architecture.

II. SQL Server Implementation

One exemplary embodiment, the DAI 10 is integrated in a client-serverDBMS product that can respond to queries from client machines formattedin the SQL language. While the present disclosure relates particularlyto the SQL Server by Microsoft®, it is understood that the concepts andfeatures described herein are in no way limited to a particular DBMSenvironment (or any other particular software, hardware, or firmwareapplication).

A. Element Discovery

An initial step in implementing the exemplary DAI 10 is to designate (or“discover”) the various elements to be illustrated in the infographicdisplay.

(i) Computer Disk System 11

Referring again to FIG. 1, the computer Disk System 11 represented bythe DAI 10 is specified by the user. If a computer system has multipleOS instances installed, the user may specify the well-known (e.g.,commercial) name of the primary OS instance, and any virtual OSinstances are then discovered by connecting to the primary OS instanceand enumerating them.

(ii) Disk Controller 12

Disk Controllers 12 are discovered from the primary OS instance usingWindows Management Instrumentation (WMI) objects Win32_SCSIControllerand Win32_IDEController. WMI is a set of extensions to the WindowsDriver Model that provides an operating system interface through whichinstrumented components provide information and notification. WMI isMicrosoft's implementation of the Web-Based Enterprise Management (WBEM)and Common Information Model (CIM) standards from the DistributedManagement Task Force (DMTF). WMI allows scripting languages likeVBScript or Windows PowerShell to manage Microsoft Windows personalcomputers and servers, both locally and remotely. The purpose of WMI isto define a non-proprietary set of environment-independentspecifications which allow management information to be shared betweenmanagement applications that run in diverse enterprise operating systemenvironments. Since there are different types of common controllers,collections for those types are enumerated to find the total controllercount in the Disk System 11.

(iii) Physical Disk 14

To obtain the Physical Disks 14 on each Disk Controller 12, a W-SQLassociator query is used to retrieve associated PnpEntities(Win32_PnPEntity):

ASSOCIATORS OF {{Win32_SCSIController.DeviceID=‘DEVICEIDOFCONTROLLER’}}WHERE AssocClass = Win32_SCSIControllerDeviceResultClass=Win32_PnPEntity”)

Each PnpEntity is then enumerated, and a lookup is performed for each onthe corresponding Win32_DiskDrive:SELECT*FROM Win32_DiskDrive WHERE PnPDeviceID=“{PnpDeviceID}”

Backslashes in the DeviceID may be escaped (or reformatted) byduplicating each backslash.

(iv) Logical Disk 15

The Logical Disk 15 to Physical Disk 14 relationship may bemany-to-many, and may be joined via a partitions table. A Logical Disk15 can span multiple partitions, and a Physical Disk 14 can havemultiple partitions. For this reason, partition information for eachPhysical Disk 14 as well as each logical disk partition may be stored ina table so that the relationships between the two can be mapped. Toretrieve this information from the primary OS instance, the partitionson each Physical Disk 14 are first enumerated using a W-SQL associatorquery:

ASSOCIATORS OF {{Win32_DiskDrive.DeviceID=‘DEVICEIDOFPHYSICALDISK’}}WHERE AssocClass = Win32_DiskDriveToDiskPartition

The Logical Disks 15 are then retrieved using the WMI objectWin32_LogicalDisk on the Disk System 11 with a DriveType of Local_Disk.Each Win32_LogicalDisk is enumerated, and a W-SQL associator query isused to retrieve the associated partitions:

ASSOCIATORS OF {{Win32_LogicalDisk.DeviceID=‘DEVICEIDOFLOGICALDISK’}}WHERE AssocClass = Win32_LogicalDiskToPartition

With this information, it is determined which Logical Disks 15 areavailable on each Physical Disk 14 by traversing from the physical diskpartitions, to the logical disk partitions, and then to Logical Disks15.

Logical Disks 15 are retrieved for any virtual OS instances in the samefashion, and the Physical Disks 14 on which they reside are stored.Using this information, for any SQL Server Files 16 from a virtual OSinstance, the Physical Disks 14 on which they reside can be determined.

(v) SQL Server Files 16 (e.g., Data and Transaction Log Files)

To retrieve SQL Server File information, all of the SQL Server instancesinstalled on all OS instances on the computer system are firstenumerated. The SQL Server instances can either be specified by the useror auto-discovered.

Next, all databases on each SQL Server instance may be retrieved usingthe following T-SQL query:

SELECT*FROM master.dbo.sysdatabases

The Files 16 associated with each database are then enumerated using thefollowing T-SQL query:

SELECT*FROM dbo.sysfiles

Each File 16 has a FileName that indicates its full path, or location,on the Logical Disk 15. This path information is used to determine onwhich Logical Disk 15 and Physical Disk 14 each File 16 resides.

B. Calculating and Rendering Path Saturation

In real-time mode, all calculations are performed over a specified timesample interval which remains constant throughout the user session, andthe inner path saturation lines 23 for Connectors 18 are updateddynamically and continuously. In historical mode, the start time and endtime of the time sample are specified by the user. The average pathsaturation over the specified time period is calculated using the sameformulas and processes described herein for real-time analysis; howeverthe inner lines 23 of Connectors 18 are solid and static.

Average Seconds/IO is the amount of time in seconds to read or write tothe specified element during a sample interval. Total IO is the numberof individual reads or writes to the specified element during a sampleinterval. Total Bytes is the number of bytes read or written to thespecified element during a sample interval. In this implementation,inbound metrics are computed in the same way as outbound metrics, justusing different input values that come from the subsystem beingmonitored.

For Physical Disks 14, the default maximum allowed value(DiskMaxAllowedSecondsPerIO) is derived from generally accepted measuresfor the point at which disk IO latency, or “average seconds per IO”, isindicative of a disk bottleneck that may be impacting the performance ofthe Disk System 11.

To compute path saturation for Physical Disks 14, each Disk Controller12 is enumerated, and for each Disk Controller 12, each disk driveelement is enumerated. If the Total IO for any Physical Disk 14 is lessthan a specified minimum allowed count, then the Average Seconds/IO forthat disk is forced to zero. This is because in certain systems therecan be high latency when there is very little disk activity; but if theTotal IO is very low, the Average Seconds/IO is essentially irrelevantto overall disk performance.

All SQL Server Files 16 on a Physical Disk 14 are enumerated by firstadding the Total Bytes across all of the files. Next, the Total IOSeconds during the sample interval across all of the files is divided bythe Total IO across all the files to obtain the Average Seconds/IOacross all of the files. Because there are often timing discrepanciesbetween counter metrics at the physical disk level and at the filelevel, the disk Total Bytes metric (DiskTotalBytes) used for the rest ofthe calculations becomes the greater of the physical disk Total Bytes,or the sum of Total Bytes for all of the SQL Server Files 16 on thePhysical Disk 14. Whichever system is used to create DiskTotalBytes(disk or SQL Server file) becomes the same system used for the diskAverage Seconds/IO metric (AvgSecondsPerIO). Thus, if disk Total Bytesare greater than the SQL Server files Total Bytes for either reads orwrites, then disk Average Seconds/IO metrics are used for both read andwrite calculations. Likewise, if SQL Server files Total Bytes aregreater, the SQL Server file Average Seconds/IO metrics are used. TheSQL Server files Total Bytes is then subtracted from DiskTotalBytes tofind the Total Bytes related to Other Files 17 (OtherFilesTotalBytes).If OtherFilesTotalBytes is less than a specified number of bytes it isdeemed insignificant and is thus subtracted from DiskTotalBytes, andthen set equal to zero, effectively removing it from the equation.

Each file's Total Bytes (FileTotalBytes) is then divided byDiskTotalBytes to determine the percentage of disk activity related toeach File (FilePercentOfDiskActivity).FilePercentOfDiskActivity=FileTotalBytes/DiskTotalBytes

The same formula may be applied for the Other Files 17 usingOtherFilesTotalBytes.OtherFilesPercentOfDiskActivity=OtherFilesTotalBytes/DiskTotalBytes

(i) Determining Inner Line Width

The width of inner line 23 varies in response to the level of pathsaturation, growing wider as saturation levels increase. The inner lineis always constrained by the static path boundary 22, which effectivelyrepresents the maximum inner line width (MaxInnerLineWidth). Thecalculations which follow show how a percentage of a maximum value iscalculated for each element (ElementPercentageOfMax). This value isalways subsequently multiplied by MaxInnerLineWidth to determine theactual inner line width (InnerLineWidth) rendered.

InnerLineWidth = (ElementPercentageOfMax * MaxInnerLineWidth)

For each File 16, FilePercentOfDiskActivity is multiplied byAvgSecondsPerIO to calculate a path saturation metric which representsthe path saturation level for the file. To determine the width of innerline 23, this metric is divided by the maximum allowed latency value forthe file (FileMaxAllowedSecondsPerIO) to calculate the percentage of themaximum (ElementPercentageOfMax). For SQL Server Files 16,FileMaxAllowedSecondsPerIO is derived from generally accepted measuresfor the point at which IO latency is indicative of a disk bottleneckthat is impacting the performance of the SQL Server. This maximum valuecan change based on the type of IO operation (read or write), as well asthe SQL Server file type (data file or transaction log file).

ElementPercentageOfMax = (FilePercentOfDiskActivity * AvgSecondsPerIO) /FileMaxAllowedSecondsPerIO

For Other Files 17, the width of inner line 23 is determined by dividingthe path saturation metric by DiskMaxAllowedSecondsPerIO to calculatethe percentage of the maximum (ElementPercentageOfMax).

ElementPercentageOfMax = (OtherFilesPercentOfDiskActivity *AvgSecondsPerIO) / DiskMaxAllowedSecondsPerIO

To determine the width of inner line 23 for Physical Disks 14, theAverage Seconds/IO is divided by DiskMaxAllowedSecondsPerIO to calculatethe percentage of the maximum (ElementPercentageOfMax).

ElementPercentageOfMax = AvgSecondsPerIO / DiskMaxAllowedSecondsPerIO

To determine the width of inner line 23 for Disk Controller 12, TotalBytes is summed for all Physical Disks 14 operatively attached to theDisk Controller 12 (ControllerTotalBytes) and divided by the maximumobserved Total Bytes for the Disk Controller 12(ControllerMaxObservedTotalBytes), which is the greater ofControllerTotalBytes for the current sample(ControllerCurrentTotalBytes) or the largest recorded historical TotalBytes value, to calculate the percentage of the maximum(ElementPercentageOfMax).

ElementPercentageOfMax = ControllerTotalBytes /ControllerMaxObservedTotalByteswhere

ControllerMaxObservedTotalBytes = Max(ControllerCurrentTotalBytes,ControllerMaxHistoricalTotalBytes)

Alternatively, an analysis can be performed to determine therelationship between controller Total Bytes and saturation levels ofPhysical Disks 14 connected to a Disk Controller 12 to find the relativecontroller path saturation for a given IO load.

(ii) Dampening Inner Line Width Changes

When in real-time mode, as the widths of inner line 23 between samplescan differ drastically, in order to effectively impart the change inactivity to the end user and smooth the transition, the change may bedampened from the previous line width to the new width over time(typically a few seconds), as opposed to changing it immediately. Thismay be done by using a bounded sin function to map the range 0→1differently:newTransitionPercent=Sin(π*transitionPercent−(π/2))/2+½sovalueCurrent=value0+newTransitionPercent*(value1−value0)

(iii) Inner Line Color

Color for inner lines 23 of Connectors 18 is generated using a lineartransition from the base color to the target color. In this case, thebase color is red and the target color is green.

newTransitionPercent = Sin(π * transitionPercent − (π/2)) / 2 + ½Rcurrent = R0 + newTransitionPercent * (R1-R0) Gcurrent = G0 +newTransitionPercent * (G1-G0) Bcurrent = B0 + newTransitionPercent *(B1-B0) CurrentColor = Color.FromARGB(Rcurrent, Gcurrent, Bcurrent)

where

-   R0, G0, B0 are the colors at the minimum saturation level, in this    case green-   R1, G1, B1 are the colors at the maximum saturation level, in this    case red

In real-time mode, when adding or removing inner lines 23 betweensamples, fade in/out is accomplished by shifting the requested color toa color closer to the background color of the tube, rather than using analpha channel. This may be done for performance reasons. The functionsto perform the fade include:

RcurrentAdjusted = (Rcurrent − R0) * penFade) + R0) GcurrentAdjusted =(Gcurrent − G0) * penFade) + G0) BcurrentAdjusted = (Bcurrent − B0) *penFade) + B0)

where

-   R0, G0, B0 are the background colors of the tube-   penFade is the percentage faded, with 1 being no fade and 0 being    fully faded

(iv) Inner Line Speed

As a further (or alternative) visual representation of disk activity,the speed of inner line 23 (LineSpeed) can be adjusted for DiskControllers 12, Physical Disks 14, Files 16, and Other Files 17elements. Line speed can be utilized either in combination with linewidth and/or color, or independently of line width and color. For eachelement, the line speed is derived using the same formulas used tocalculate line width by first determining the percentage of the maximumallowed latency value for the respective element(PercentageOfMaxAllowedSecondsPerIO). This value is subtracted from 1,then multiplied by the maximum possible line speed value(MaximumLineSpeed), and then the maximum of this value or a minimum linespeed (MinimumLineSpeed) is used as the line speed. This causes theinner line to move slower the higher the percentage of the maximumallowed latency, until it reaches the minimum line speed threshold.

LineSpeed = Max(((1.0 − PercentageOfMaxAllowedSecondsPerIO) *MaximumLineSpeed), MinimumLineSpeed)

C. Data Retrieval

(i) Physical Disk 14

For Physical Disks 14, Total Bytes and Average Seconds/IO are collected.Total Bytes is computed by taking the Windows performance countersPhysicalDisk:Disk Read Bytes/sec and PhysicalDisk:Disk Write Bytes/secfor the last sample interval and multiplying the value by the number ofseconds in the last sample interval. Average Seconds/IO is determined byreading the value of PhysicalDisk:Avg. Disk Sec/Read andPhysicalDisk:Avg Disk Sec/Write during the previous interval.

(ii) SQL Server Files 16

For SQL Server Files 16, Total Bytes, Total Latency Milliseconds, andTotal IO are collected using the following T-SQL queries:

SQL Server 2005 or greater: SELECT * FROMsys.dm_io_virtual_file_stats(null,null) SQL Server 2000: SELECT * FROM::fn_virtualfilestats(−1, −1)

As SQL Server stores cumulative totals for all values, current valuesfor each metric are determined by subtracting the last raw valuecollected by the current raw value collected.

Total Bytes read and written are collected for each File 16, and thecurrent values are calculated as described above. To compute the AverageSeconds/IO for reads or writes for all SQL Server Files 16 on a disk, onSQL Server 2005 (e.g.) the Total Latency Milliseconds for reads orwrites are summed and multiplied by 1000 to convert the value intoseconds, and then divided by the Total IO for reads and writesrespectively. SQL Server 2000 (e.g.) contains only a single column forTotal Latency Milliseconds, so the same metric is used for both read andwrite Average Seconds/IO calculations.

III. Alternate Approaches to Represent Disk Activity

A. Average Seconds Per IO Only

In one alternative implementation of the DAI, Average Seconds/IO can beused for all measurements, with the path saturation represented by thepercentage of the maximum allowed Average Seconds/IO for that element.One issue with representing data in this way is that in a typical flowdiagram, when two tubes merge, the logical outcome is that the mergedresult will be the sum of the two rates that merged. With inverse rates,however, the results can be seemingly non-intuitive. For example, if youhave two tubes with a rate of 2 seconds/liter flowing into a commontube, the overall output of the merged tube is one second per liter, not4 seconds per liter. The logic being that each tube is flowing at 0.5liters per second, so in one second they output 1 liter combined, whichmeans the merged tube is flowing at 1 second/liter. Because of thiseffect, it may not be desirable to use latency alone to achieve aneasily interpreted, intuitive result.

B. Rate (Bytes/Sec OR IO/Sec) Only

Using throughput only provides another way of showing how much data isflowing through a disk system. However, every system has differentthroughput capabilities depending on the hardware, and there are nosolid upper bounds that are widely recognized such as exist with disklatency. Therefore, it may not be practical to calculate an upper boundon the throughput for every system without extensive load testing, whichis not typically feasible for production systems.

Embodiments of the present invention described above may includeapparatuses for performing the operations herein. An apparatus may bespecially constructed for the desired purposes, or it may comprise ageneral purpose device selectively activated or reconfigured by acomputer program stored in the device.

Computer programs may include object oriented computer programs, and maybe stored in main memory and/or secondary memory and/or removablestorage units, also called computer program products. Such computerprograms, when executed, may enable the computer system to perform thefeatures of the present invention as discussed herein. In particular,the computer programs, when executed, may enable the computer system toprovide a method for displaying an infographic disk activity interfaceaccording to an exemplary embodiment of the present invention.Accordingly, such computer programs may represent controllers of thecomputer system.

In another exemplary embodiment, the invention may be directed to acomputer program product comprising a computer-readable medium havingcomputer software stored therein. The computer software, when executedby the processor, may cause the processor to perform the functions ofthe invention as described herein.

In another exemplary embodiment where the invention may be implementedusing software, the software may be stored in a computer program productand loaded into computer system using, for example, a removable storagedrive, hard drive or communications interface. The control logic(software), when executed by the processor, may cause the processor toperform the functions of the invention as described herein. The computersoftware may run as a standalone software application program runningatop an operating system, or may be integrated into the operatingsystem.

In yet another embodiment, the invention may be implemented primarily inhardware using, for example, hardware components such as applicationspecific integrated circuits (ASICs), or one or more state machines.Implementation of the hardware state machine so as to perform thefunctions described herein will be apparent to persons skilled in therelevant art.

Exemplary embodiments of the invention may also be implemented asinstructions stored on a computer-readable medium, which may be read andexecuted by a computing platform to perform the operations describedherein. A computer-readable medium may include any mechanism for storingor transmitting information in a form readable by a machine (e.g., acomputer). For example, a computer-readable medium may include read onlymemory (ROM); random access memory (RAM); magnetic disk storage media;optical storage media; flash memory devices; electrical, optical,acoustical or other form of propagated signals (e.g., carrier waves,infrared signals, and digital signals), and others.

Unless specifically stated otherwise, as apparent from the followingdiscussions, it is appreciated that throughout the specificationdiscussions utilizing terms such as “processing,” “computing,”“calculating,” “determining,” or the like, refer to the action and/orprocesses of a computer or computing system, or similar electroniccomputing device, that manipulate and/or transform data represented asphysical, such as electronic, quantities within the computing system'sregisters and/or memories into other data similarly represented asphysical quantities within the computing system's memories, registers orother such information storage, transmission or display devices.

In a similar manner, the term “processor” may refer to any device orportion of a device that processes electronic data from registers and/ormemory to transform that electronic data into other electronic data thatmay be stored in registers and/or memory. A “computing platform” maycomprise one or more processors.

Exemplary embodiments of the present invention are described above. Noelement, act, or instruction used in this description should beconstrued as important, necessary, critical, or essential to theinvention unless explicitly described as such. Although only a view ofthe exemplary embodiments have been described in detail herein, thoseskilled in the art will readily appreciate that many modifications arepossible in these exemplary embodiments without materially departingfrom the novel teachings and advantages of this invention. Accordingly,all such modifications are intended to be included within the scope ofthis invention as defined in the appended claims.

In the claims, any means-plus-function clauses are intended to cover thestructures described herein as performing the recited function and notonly structural equivalents, but also equivalent structures. Thus,although a nail and a screw may not be structural equivalents in that anail employs a cylindrical surface to secure wooden parts together,whereas a screw employs a helical surface, in the environment offastening wooden parts, a nail and a screw may be equivalent structures.Unless the exact language “means for” (performing a particular functionor step) is recited in the claims, a construction under §112, 6thparagraph is not intended. Additionally, it is not intended that thescope of patent protection afforded the present invention be defined byreading into any claim a limitation found herein that does notexplicitly appear in the claim itself.

We claim:
 1. A non-transitory computer-readable medium storinginstructions which, when executed by at least one processor of acomputer system, adapt said computer system to implement a method fordisplaying relative saturation of a computer disk system, said methodcomprising: visually displaying elements of the computer disk system inan infographic disk activity interface, said elements comprising atleast one of a group consisting of at least one disk controller, atleast one physical disk, at least one logical disk, at least one file,and at least one other files; visually linking said elements using anarrangement of connectors, said connectors defining respective data flowpaths between said elements; and visually indicating disk systemactivity comprising a relative path saturation of data flow along saiddata flow paths, the relative path saturation representing activitymeasurements comprising data flow rate and latency, wherein latencycomprises a time to process data flow operations occurring on at leastone element of the computer disk system, and wherein visually indicatingdisk system activity comprises simultaneously representing data flowrate and latency in a single line having at least two visual attributes,whereby the visual attributes indicate data flow rate and latency alongrespective data flow paths such that relative disk system activitycreating a bottleneck of data flow along any given data flow path can bevisually determined.
 2. A computer-readable medium according to claim 1,wherein for each element displayed, said connectors comprise an inboundconnector representing a data write path and an outbound connectorrepresenting a data read path.
 3. A computer-readable medium accordingto claim 1, wherein each connector comprises a static path boundarydefined by first and second solid equidistant lines.
 4. Acomputer-readable medium according to claim 3, wherein each connectorfurther comprises an inner graphic within said static path boundary, andrepresenting relative disk activity along each data flow path.
 5. Acomputer-readable medium according to claim 4, wherein, in a real-timemode, said inner graphic comprises a moving segmented line.
 6. Acomputer-readable medium according to claim 5, wherein, in a real-timemode, a width of the moving segmented line changes dynamically inresponse to varying levels of path saturation.
 7. A computer-readablemedium according to claim 6, and comprising dampening an inner linewidth change between sample readings of data flow path saturation.
 8. Acomputer-readable medium according to claim 5, wherein, in a real-timemode, a color of the moving segmented line changes dynamically inresponse to varying levels of path saturation.
 9. A computer-readablemedium according to claim 5, wherein, in a real-time mode, a speed ofthe moving segmented line changes dynamically in response to varyinglevels of path saturation.
 10. A computer-readable medium according toclaim 5, wherein, in a real-time mode, a width and color of the movingsegmented line changes simultaneously and dynamically in response tovarying levels of path saturation.
 11. A computer-readable mediumaccording to claim 4, wherein, in a historical mode, said inner graphiccomprises a colored, non-moving solid line.
 12. A computer-implementedmethod for displaying relative saturation of a computer disk system,said method comprising: visually displaying elements of the computerdisk system in an infographic disk activity interface, said elementscomprising at least one of a group consisting of at least one diskcontroller, at least one physical disk, at least one logical disk, atleast one file, and at least one other files; visually linking saidelements using an arrangement of connectors, said connectors definingrespective data flow paths between said elements; and visuallyindicating disk system activity comprising a relative path saturation ofdata flow along said data flow paths, the relative path saturationrepresenting activity measurements comprising data flow rate andlatency, wherein latency comprises a time to process data flowoperations occurring on at least one element of the computer disksystem, and wherein visually indicating disk system activity comprisessimultaneously representing data flow rate and latency in a single linehaving at least two visual attributes, whereby the visual attributesindicate data flow rate and latency along respective data flow pathssuch that relative disk system activity creating a bottleneck of dataflow along any given data flow path can be visually determined.
 13. Amethod according to claim 12, wherein for each element displayed, saidconnectors comprise an inbound connector representing a data write pathand an outbound connector representing a data read path.
 14. A methodaccording to claim 12, wherein each connector comprises a static pathboundary defined by first and second solid equidistant lines.
 15. Amethod according to claim 14, wherein each connector further comprisesan inner graphic within said static path boundary, and representingrelative disk activity along each data flow path.
 16. A method accordingto claim 15, wherein, in a real-time mode, said inner graphic comprisesa moving segmented line.
 17. A method according to claim 16, wherein, ina real-time mode, a width of the moving segmented line changesdynamically in response to varying levels of path saturation.
 18. Amethod according to claim 17, and comprising dampening an inner linewidth change between sample readings of data flow path saturation.
 19. Amethod according to claim 16, wherein, in a real-time mode, a color ofthe moving segmented line changes dynamically in response to varyinglevels of path saturation.
 20. A method according to claim 16, wherein,in a real-time mode, a speed of the moving segmented line changesdynamically in response to varying levels of path saturation.
 21. Amethod according to claim 16, wherein, in a real-time mode, a width andcolor of the moving segmented line changes simultaneously anddynamically in response to varying levels of path saturation.
 22. Amethod according to claim 15, wherein, in a historical mode, said innergraphic comprises a colored, non-moving solid line.